#include <string>
#include <iostream>

using namespace std;

int main()
{
    string nums[] = {"one", "two", "three"};
    string *p = &nums[0];                       // p 指向 nums 的第一个元素
    string *p2 = nums;                          // 等价于 p2 = &nums[0]

    int ia[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    auto ia2(ia);           // ia2 是一个整型指针，指向 ia 的第一个元素
    // 编译器实际执行：
    // auto ia2(&ia[0]);    // 显然 ia2 的类型是 int*
    // ia2 = 42;            // 错误：ia2 是一个指针，不能用 int 值给指针赋值

    // ia3 是一个含有 10 个整数的数组
    decltype(ia) ia3 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int *ip = ia;
    // ia3 = ip;            // 错误：不能用指针给数组赋值
    ++ip;                   // ip 指向 ia[1]

    int *e = &ia[10];       // 指向 ia 尾元素的下一位置的指针
                            // 不能对尾后指针执行解引用或递增操作

    // 输出 arr 的元素
    for (int *b = ia; b != e; ++b)
        cout << *b << endl;
}